function listarObservacoes(nome_espaco) {
    $.ajax({
        type: "POST",
        url : "observacao.html",
        success: function(msg){
            $("#gestao_espaco_observacao").html(msg);
            $.ajax({
                type: "POST",
                url : "../controllers/ObservacaoController.php",
                data : {
                    nome_espaco : nome_espaco,
                    acao : 'listar',
                    tipo_listagem : 'tabela'
                },
                success: function(msg){
                    try {
                        if (msg.indexOf("Exception: ") != -1) {
                            msg = msg.replace("Exception: ", "");
                            showMessage(ERROR_MESSAGE, msg);
                            return;
                        }
                        $("#tabela_observacao_tbody").html(msg); 
                        tabela_observacao = $('#tabela_observacao').dataTable({
                            "sDom": '<"H"lfr>t<"F"ip>T',
                            "bJQueryUI": true,
                            "sPaginationType": "full_numbers",
                            "bProcessing": true,
                            "bAutoWidth": false,
                            "oLanguage": {
                                "sUrl": "../resources/json/pt_BR.json"
                            }
                        });
                        $('#botao_observacao_cadastrar').button();
                        $('#botao_observacao_cadastrar').click(function () {
                            showDialogManutencaoRecurso(true, 400, 200, "forms/observacao.html", {
                                Cadastrar : function () {
                                    manutencaoObservacao('cadastrar', null, nome_espaco);
                                },
                                Cancelar: function() {
                                    $(this).dialog('close');
                                }
                            });
                        });
                        verificarPermissao('observacao', 'botao_observacao_cadastrar', 'inclusao');
                        $('#tabela_observacao').parent().show();
                    } catch(e) {
                        reportCrash(null, e.name, e.stack);
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    reportCrash(XMLHttpRequest, textStatus, errorThrown);
                }
            });
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            reportCrash(XMLHttpRequest, textStatus, errorThrown);
        }
    });
}

function manutencaoObservacao(acao, cod_observacao, nome_espaco) {
    try {
        $("#progress").show();
        var observacao;
        if (acao == 'cadastrar') {
            observacao = $("#observacao_cadastrar").val();
        
            if (observacao == '') {
                showMessage(ERROR_MESSAGE, 'Observação inválida!');
                return;
            }
        }
        $.ajax({
            type: "POST",
            url : "../controllers/ObservacaoController.php",
            data : {
                cod_observacao : cod_observacao,
                texto : observacao,
                nome_espaco : nome_espaco,
                acao : acao
            },
            success: function(msg){
                try {
                    $("#progress").hide();
                    if (msg.indexOf("Exception: ") != -1) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    if (acao == 'cadastrar') {
                        listarObservacoes(nome_espaco);
                    } else if (acao == 'excluir') {
                        var botao = $('#' +cod_observacao).children("td:first");
                        tabela_observacao.fnDeleteRow( tabela_observacao.fnGetPosition(botao[0])[0]);
                    }
                    $("#recurso").dialog('close');
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#progress").hide();
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}